﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;

namespace WebServer
{
    /// <summary>
    /// Сводное описание для WebService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // Чтобы разрешить вызывать веб-службу из скрипта с помощью ASP.NET AJAX, раскомментируйте следующую строку. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService : System.Web.Services.WebService
    {
        private string connectionString = WebConfigurationManager.ConnectionStrings["CinemaConnectionString"].ConnectionString;
        private string sql;

       
        //Метод извлечения всех кинотеатров из БД
        [WebMethod]
        public DataSet GetCinema()
        {
            DataSet cinemaDataSet = new DataSet();
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                sql = "SELECT * FROM cinema";                                 //запрос к БД         
                SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
                adapter.Fill(cinemaDataSet, "cinema");
            }
            finally
            {
                connection.Close();
            }
            return cinemaDataSet;
        }

        //Метод извлечения фильмов, идущие в выбранном кинотеатре из БД
         [WebMethod]
        public DataSet GetFilm(string cinemaId)
        {
            DataSet filmDataSet = new DataSet();
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                sql = "SELECT * FROM FilmByCinema WHERE cinemaId=" + cinemaId;    //запрос к БД
                SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
                adapter.Fill(filmDataSet, "film");
            }
            finally
            {
                connection.Close();
            }
            return filmDataSet;
        }

         //Метод получения сеансов, по выбранному фильму из БД
        [WebMethod]
        public DataSet GetSession(string cinemaId, string filmId)
        {
            DataSet sessionDataSet = new DataSet();
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                sql = "SELECT * FROM SessionByFilmAndCinema WHERE cinemaId=" + cinemaId + "AND filmId=" + filmId;  //запрос к БД
                SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);                                 //используется для передачи данных от базы данных объекту DataSet                                                  //потребитель данных
                adapter.Fill(sessionDataSet, "session");
            }
            finally
            {
                connection.Close();
            }
            return sessionDataSet;
        }

        //Добавление нового сеанса
        [WebMethod]
        public void AddSession(string hallId, string filmId, string dateSession, string timeSession, string cost) 
        {
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                SqlCommand command1 = new SqlCommand(                          //инструкция выполняемая над БД
                    "INSERT INTO session(id_hall,id_film,Time,Cost)" +
                    "VALUES (" + hallId + "," +
                    filmId + ",'" + dateSession + " " +
                    timeSession + "'," + cost + ")", connection);
                command1.ExecuteNonQuery();                                     //возвращает строки, полученные в ходе интсрукции

            }

            finally
            {
                connection.Close();
            }
        }

        //Необходим для авторизации
        [WebMethod]
        public DataSet GetUser(string login,string password)
        {
            DataSet userDataSet = new DataSet();
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                SqlDataAdapter adapter = new SqlDataAdapter("select login,password from visitor where login='" + login + "' and password='" + password + "'", connection);
                adapter.Fill(userDataSet, "user");
            }
            finally
            {
                connection.Close();
            }
            return userDataSet;
            
        }

        //Добавление нового пользователя. Необходим для регистрации
        [WebMethod]
        public void AddUser(string login, string password)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                SqlCommand command1 = new SqlCommand("insert into visitor (login, password) " + "values ('" + login + "','" + password + "')", connection);
                command1.ExecuteNonQuery();                                    
            }

            finally
            {
                connection.Close();
            }
        }

        //Проверка на созданного пользователя. Необходим для авторизации
        [WebMethod]
        public DataSet checkUser(string login)
        {
            DataSet userDataSet = new DataSet();
            SqlConnection connection = new SqlConnection(connectionString);
            try
            {
                connection.Open();
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT login FROM visitor WHERE login='" + login + "'", connection);
                adapter.Fill(userDataSet, "user");
            }

            finally
            {
                connection.Close();
            }
            return userDataSet;
        }



    }
}
